package com.crcode.crm.service.module;

import java.util.List;
import java.util.Map;

import com.crcode.crm.bean.module.ModuleBean;
import com.crcode.crm.service.CommonService;
import com.crcode.crm.utils.PageVo;
import com.crcode.crm.utils.ResultPageUtil;
import com.crcode.crm.utils.ResultUtil;
/**
 * 模块业务处理层接口
 * @author lxw
 * @date 2019年1月22日
 */
public interface ModuleService extends CommonService<ModuleBean, Integer> {
	/**
	 * 根据条件分页加载
	 * @author lxw
	 * @date 2018年4月1日 下午2:26:17
	 * @param pid 父级序号
	 * @param pageIndex 当前页
	 * @param pageSize 每页大小
	 * @param name 模块名称
	 * @return
	 */
	public ResultPageUtil findBySpec(Map<String, Object> param,PageVo vo);
	
	/**
	 * 根据父级程序序号和模块名称查询
	 * @author lxw
	 * @date 2019年1月22日
	 * @param puuid
	 * @param moduleName
	 * @return
	 */
	public List<ModuleBean> findDataByPuuidAndModuleName(String puuid,String moduleName);
	
	 /**
     * 新增OR编辑保存
     * @author lxw
     * @date 2019年1月22日
     * @param module
     * @return
     */
	public ResultUtil addOrEditSave(ModuleBean module);
	
	/**
     * 根据程序序号集删除
     * @author lxw
     * @date 2019年1月22日
     * @param uuids
     * @return
     */
	public boolean deleteModulesByUUids(List<String> uuids);
	/**
	 * 批量删除
	 * @author lxw
	 * @date 2019年2月14日
	 * @param uuids
	 * @return
	 */
	public ResultUtil deleteByUUids(String uuids);
	/**
	 * 根据父级程序序号查询数据集
	 * @author lxw
	 * @date 2019年1月22日
	 * @param puuid
	 * @return
	 */
	public List<ModuleBean> getDataByPuuid(String puuid);
	
	/**
	 * 根据类型和父级UUID查询数据
	 * @author lxw
	 * @date 2019年1月22日
	 * @param moduleType
	 * @param puuid
	 * @return
	 */
	public List<ModuleBean> getDataByModuleTyoeAndPuuid(Integer moduleType,String puuid);
	
	/**
	 * 根据puuid及uuids查询结果
	 * @author lxw
	 * @date 2019年1月22日
	 * @param puuid
	 * @param uuids
	 * @return
	 */
	public List<ModuleBean> getDataByPuuidAndUuidIn(String puuid,List<String> uuids);
	
	/**
	 * 加载模块树
	 * @author lxw  
	 * @date 2018年8月27日 下午4:35:48
	 * @return
	 */
	public Map<String, Object> loadModuleTree();
}
